/*************************************************************************
 ** Copyright (C) 2013 Jan Pedersen <jp@jp-embedded.com>
 ** 
 ** This program is free software: you can redistribute it and/or modify
 ** it under the terms of the GNU General Public License as published by
 ** the Free Software Foundation, either version 3 of the License, or
 ** (at your option) any later version.
 ** 
 ** This program is distributed in the hope that it will be useful,
 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ** GNU General Public License for more details.
 ** 
 ** You should have received a copy of the GNU General Public License
 ** along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *************************************************************************/

#ifndef __TERMIO
#define __TERMIO

#include <termios.h>
#include <unistd.h>

class termio
{
	termios state, saved_state;
	public:

	termio()		
	{
	       tcgetattr(STDIN_FILENO, &saved_state); 
	       std::copy(&saved_state, &saved_state+1, &state); 
	}

	~termio()		
	{
	       tcsetattr(STDIN_FILENO, TCSANOW, &saved_state); 
	}

	void echo(bool on)	
	{ 
		if(on) state.c_lflag |= ECHO; 
		else state.c_lflag &= ~ECHO; 
		tcsetattr(STDIN_FILENO, TCSANOW, &state); 
	}

	void canonical(bool on)	
	{ 
		if(on) state.c_lflag |= ICANON; 
		else state.c_lflag &= ~ICANON; 
		tcsetattr(STDIN_FILENO, TCSANOW, &state); 
	}
};

#endif

